package cn.dengta.webapp.trade.model;

import cn.dengta.common.model.ValueProxy;
import cn.dengta.common.model.ValueProxyImpl;
import lombok.Getter;

/**
 * 产品类型
 */
@Getter
public enum ProductType implements ValueProxyImpl<ProductType, Integer> {
	/** 标准 */
	STD(0, "标准"),
	/** 可变（额度可以根据配置的数量动态调整） */
	VAR(1, "可变"),
	FIRST(2, "首次"),
	//
	;
	// 定义私有变量
	public final Integer value;
	public final boolean multiple;
	final ValueProxy<ProductType, Integer> proxy;

	// 构造函数，枚举类型只能为私有
	ProductType(Integer value, String label, boolean multiple) {
		this.value = value;
		this.multiple = multiple;
		this.proxy = new ValueProxy<>(this, value, label);
	}

	ProductType(Integer value, String label) {
		this(value, label, false);
	}

	public static final ProductType[] getValues() {
		return ValueProxy.getCachedArray(ProductType.class, ProductType::values);
	}

	public static ProductType of(Integer value) {
		return STD.getValueOf(value);
	}
}
